package com.lnu_devteam.zongce.model.vo;

import com.lnu_devteam.zongce.common.ErrorCode;
import com.lnu_devteam.zongce.exception.BusinessException;
import com.lnu_devteam.zongce.model.entity.FixedScore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @author xbaozi
 * @version 1.0
 * @classname ScoreVO
 * @date 2023-04-07  17:45
 * @description 分数视图
 */
@ApiModel(description = "分数视图")
@Data
public class ScoreVO implements Serializable, Cloneable {
    /**
     * 分数标识自增主键
     */
    @ApiModelProperty("分数标识自增主键")
    private Long sId;

    /**
     * 分数变更项，例挑战杯/校赛/银奖
     */
    @ApiModelProperty("分数变更项，例挑战杯/校赛/银奖")
    private String sProject;

    /**
     * 变更分数
     */
    @ApiModelProperty("变更分数")
    private Double sValue;

    /**
     * 证明材料，存放图片urlJSON，限制两张
     */
    @ApiModelProperty("证明材料，存放图片urlJSON，限制两张")
    private List<String> sSupport;

    /**
     * 学年
     */
    @ApiModelProperty("学年")
    private String sAcademicYear;

    /**
     * 分数所属学院
     */
    @ApiModelProperty("分数所属学院")
    private String sCollege;

    /**
     * 分数所属年级
     */
    @ApiModelProperty("分数所属年级")
    private String sGrade;

    /**
     * 分数所属专业
     */
    @ApiModelProperty("分数所属专业")
    private String sMajor;

    /**
     * 分数所属班级
     */
    @ApiModelProperty("分数所属班级")
    private String sClass;

    /**
     * 分数变更类型，德育分0、技能分1、文体分2
     */
    @ApiModelProperty("分数变更类型，德育分0、技能分1、文体分2")
    private Integer sType;

    /**
     * 分数变更申请状态，0待审核(申请成功)、1审核通过、2申请驳回，默认0待审核
     */
    @ApiModelProperty("分数变更申请状态，0待审核(申请成功)、1审核通过、2申请驳回，默认0待审核")
    private Integer sStatus;

    /**
     * 额外信息，用于存放驳回信息
     */
    @ApiModelProperty("额外信息，用于存放驳回信息")
    private String sExtra;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 创建用户(分数申请人)，逻辑外键，学号/工号
     */
    @ApiModelProperty("创建用户(分数申请人)，逻辑外键，学号/工号")
    private String createUser;

    /**
     * 创建用户姓名
     */
    @ApiModelProperty("创建用户姓名")
    private String createUserName;

    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    private Date updateTime;

    /**
     * 更新用户(审核人)，逻辑外键，学号/工号
     */
    @ApiModelProperty("更新用户(审核人)，逻辑外键，学号/工号")
    private String updateUser;

    /**
     * 更新用户姓名
     */
    @ApiModelProperty("更新用户姓名")
    private String updateUserName;

    @Override
    public ScoreVO clone() {
        try {
            return (ScoreVO) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new BusinessException(ErrorCode.SYSTEM_ERROR);
        }
    }
}
